package com.lz.gmall.cart.controller;

import com.lz.gmall.cart.entity.CartItem;
import com.lz.gmall.cart.service.CartListService;
import com.lz.gmall.common.result.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/cart")
public class CartListController {

    @Autowired
    private CartListService cartListService;

    /**
     * 当进入购物车详情页面，前端就会发送请求获取购物车列表
     * 根据用户id和临时id确定购物车，通过mvc的工具类进行获取
     * @return
     */
    @GetMapping("cartList")
    public Result<List<CartItem>> getCartList(){
        List<CartItem> cartItemList = cartListService.getCartList();
        return Result.ok(cartItemList);
    }

    /**
     * 修改购物车中商品的数量，进行加一减一操作
     * @param skuId 商品id
     * @param skuNum 商品数量
     * @return
     */
    @PostMapping("/addToCart/{skuId}/{skuNum}")
    public Result updateCartSkuNum(@PathVariable("skuId")Long skuId,@PathVariable("skuNum")Integer skuNum){
        cartListService.updateCartSkuNum(skuId,skuNum);
        return Result.ok();
    }

    /**
     * 更改购物车中的选中状态
     * @param skuId 商品id
     * @param isChecked 商品是否选中
     * @return
     */
    @GetMapping("/checkCart/{skuId}/{isChecked}")
    public Result updateCartCheck(@PathVariable("skuId")Long skuId,@PathVariable("isChecked")Integer isChecked){
        cartListService.updateCartCheck(skuId,isChecked);
        return Result.ok();
    }

    /**
     * 删除购物车中的单个商品
     * @param skuId 商品id
     * @return
     */
    @DeleteMapping("/deleteCart/{skuId}")
    public Result deleteCartSkuBySkuId(@PathVariable("skuId")Long skuId){
        cartListService.deleteCartSkuBySkuId(skuId);
        return Result.ok();
    }

    /**
     * 根据购物车的选中状态批量删除商品
     * @return
     */
    @DeleteMapping("/deleteChecked")
    public Result deleteCartSkusByChecked(){
        cartListService.deleteCartSkusByChecked();
        return Result.ok();
    }
}
